/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import java.sql.Time;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 *
 * @author diego
 */
public class Funcion {
    
    private Integer id ;
    private Date fecha;
    private Date hora;
    private String descripcion;
    private String nombre;
    private Evento unEvento;
    private Map<String,Ticket> butacasVendidas;
    private Set<Tarifa> tarifas;
    private Set<TransaccionVentas> transacciones;
    private boolean activa;
    

    public Funcion() {
    }

    public Funcion(Integer id, Date fecha, Date hora, String descripcion, String nombre, Evento unEvento) {
        this.id = id;
        this.fecha = fecha;
        this.hora = hora;
        this.descripcion = descripcion;
        this.nombre = nombre;
        this.unEvento = unEvento;
        this.butacasVendidas = new HashMap();
        this.tarifas = new HashSet();
        this.transacciones = new HashSet();
        this.activa = true;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public Date getHora() {
        return hora;
    }

    public void setHora(Date hora) {
        this.hora = hora;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Evento getUnEvento() {
        return unEvento;
    }

    public void setUnEvento(Evento unEvento) {
        this.unEvento = unEvento;
    }

    public Map<String, Ticket> getButacasVendidas() {
        return butacasVendidas;
    }

    public void setButacasVendidas(Map<String, Ticket> butacasVendidas) {
        this.butacasVendidas = butacasVendidas;
    }

    public Set<Tarifa> getTarifas() {
        return tarifas;
    }

    public void setTarifas(Set<Tarifa> tarifas) {
        this.tarifas = tarifas;
    }

    public Set<TransaccionVentas> getTransacciones() {
        return transacciones;
    }

    public void setTransacciones(Set<TransaccionVentas> transacciones) {
        this.transacciones = transacciones;
    }

    public boolean isActiva() {
        return activa;
    }
    
    public boolean getActiva() {
        return activa;
    }

    public void setActiva(boolean activa) {
        this.activa = activa;
    }

    
    
    
    
   /*
    public void venderTicket(Butaca unaButaca, String nro, Double precio, Usuario unUsuario){
        //Butaca unaButaca, String nro, Double precio, Usuario unUsuario
        Ticket unTicket = new Ticket(this,unaButaca,nro,precio,unUsuario);
        this.butacasVendidas.put(nro, unTicket);
    }
    */
    
    public TransaccionVentas crearTransaccionVenta(){
        Date fecha = new Date();        
        TransaccionVentas tr = new TransaccionVentas(this,fecha);
        return tr;
        
    }
    
    public void agregarTicket(TransaccionVentas unaTransaccion,Funcion unaFuncion, Butaca unaButaca, String nro, Tarifa unaTarifa, Usuario unUsuario){
        unaTransaccion.agregarTicket(unaFuncion, unaButaca, nro, unaTarifa.getUnPrecio(), unUsuario);
    }
    
    public void habilitar(){
        this.setActiva(true);
    }
    
    public void deshabilitar(){
        this.setActiva(false);
    }
    
    public void agregarTarifa(Tarifa unaTarifa){
        this.tarifas.add(unaTarifa);
        
    }
   /* 
    public void quitarTarifa(Tarifa unaTarifa){
        this.tarifas.
    }
    */
    
    

   

    
    
    
    
}
